﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ClientBackBone.EDDN.Profiles
{  
    

    public class LastSystem
    {
        public string id { get; set; }
        public string name { get; set; }
        public string faction { get; set; }
    }

    

    public class ModulesForSale
    {
        public int id { get; set; }
        public string category { get; set; }
        public string name { get; set; }
        public int cost { get; set; }
        public object sku { get; set; }
    }

   

    public class Modules
    {
        
    }

    public class LastStarport
    {
        public string id { get; set; }
        public string name { get; set; }
        public string faction { get; set; }
        public List<Commodity> commodities { get; set; }
        public Tuple<int,ModulesForSale> modules { get; set; }
    }

    public class Furthest
    {
        public int distance { get; set; }
        public int origin { get; set; }
        public int destination { get; set; }
    }

    public class HighestEarnings
    {
        public int value { get; set; }
        public int distance { get; set; }
        public int origin { get; set; }
        public int destination { get; set; }
        public int faction { get; set; }
    }

    public class Courier
    {
        public int missionsAccepted { get; set; }
        public Furthest furthest { get; set; }
        public HighestCourierEarnings highestEarnings { get; set; }
        public int missionsCompleted { get; set; }
        public int creditsEarned { get; set; }
        public int missionsFailed { get; set; }
        public List<object> latestCompleted { get; set; }
    }

    public class HighestCourierEarnings
    {
        public int value { get; set; }
        public int commodity { get; set; }
        public int qty { get; set; }
        public int distance { get; set; }
        public int origin { get; set; }
        public int destination { get; set; }
        public int faction { get; set; }
    }


    public class LatestCompleted
    {
        public int value { get; set; }
        public string faction { get; set; }
        public string type { get; set; }
    }

    public class HighestEarningsLight
    {
        public int value { get; set; }
        public int origin { get; set; }
        public int faction { get; set; }
    }

    public class BountyHunter
    {
        public HighestEarningsLight highestEarnings { get; set; }
        public int missionsCompleted { get; set; }
        public int creditsEarned { get; set; }
        public int missionsFailed { get; set; }
        public List<object> latestCompleted { get; set; }
        public int missionsAccepted { get; set; }
    }

    public class Missions
    {
        public Courier courier { get; set; }
        public Courier deliver { get; set; }
        public Courier collect { get; set; }
        public BountyHunter assassin { get; set; }
        public BountyHunter bountyHunter { get; set; }
    }

    public class Visited
    {
        public List<string> starsystem { get; set; }
        public List<string> starport { get; set; }
    }

    public class ScanSoldLevels
    {
        public int lev_0 { get; set; }
        public int lev_1 { get; set; }
        public int lev_2 { get; set; }
        public int lev_3 { get; set; }
    }

    public class LatestPayout
    {
        public string market { get; set; }
        public int value { get; set; }
    }

    public class Explore
    {
        public int hyperspaceJumps { get; set; }
        public double totalHyperspaceDistance { get; set; }
        public Visited visited { get; set; }
        public double greatestDistanceFromStart { get; set; }
        public int creditsEarned { get; set; }
        public int bodiesCount { get; set; }
        public ScanSoldLevels scanSoldLevels { get; set; }
        public List<LatestPayout> latestPayouts { get; set; }
        public int highestPayout { get; set; }
        public List<string> lastVisitedStarSystems { get; set; }
        public int bodiesFirstDiscovered { get; set; }
        public int bodiesSoldCount { get; set; }
    }

    public class Spend
    {
        public int ships { get; set; }
        public int fuel { get; set; }
        public int modules { get; set; }
        public int ammo { get; set; }
        public int repair { get; set; }
    }

    public class FuelUnits
    {
        public int purchased { get; set; }
        public int scooped { get; set; }
    }

    public class Insurance
    {
        public int claims { get; set; }
        public int value { get; set; }
    }

   

    public class Wealth
    {
        public int maxCredits { get; set; }
    }   

    public class LargestProfit
    {
        public int value { get; set; }
        public string commodity { get; set; }
        public int qty { get; set; }
        public string marketId { get; set; }
    }

    public class LargestProfitPerItem
    {
        public double value { get; set; }
        public string commodity { get; set; }
        public string marketId { get; set; }
    }

    public class Trade
    {
        public List<string> marketIds { get; set; }
        public Furthest furthest { get; set; }
        public LargestProfit largestProfit { get; set; }
        public LargestProfitPerItem largestProfitPerItem { get; set; }
        public int count { get; set; }
        public int qty { get; set; }
        public int profit { get; set; }
        public double totalDistance { get; set; }
    }

    public class LargestProfit2
    {
        public int value { get; set; }
        public int commodity { get; set; }
        public int qty { get; set; }
        public int marketId { get; set; }
    }

    public class LargestProfitPerItem2
    {
        public int value { get; set; }
        public int commodity { get; set; }
        public int marketId { get; set; }
    }

    public class Converted
    {
        public int qty { get; set; }
    }

    public class Mining
    {
        public LargestProfit2 largestProfit { get; set; }
        public LargestProfitPerItem2 largestProfitPerItem { get; set; }
        public int count { get; set; }
        public int qty { get; set; }
        public int profit { get; set; }
        public Converted converted { get; set; }
    }

    public class LargestProfit3
    {
        public int value { get; set; }
        public string commodity { get; set; }
        public int qty { get; set; }
        public string marketId { get; set; }
    }

    public class LargestProfitPerItem3
    {
        public int value { get; set; }
        public string commodity { get; set; }
        public string marketId { get; set; }
    }    

    public class LargestProfit4
    {
        public int value { get; set; }
        public string commodity { get; set; }
        public int qty { get; set; }
        public string marketId { get; set; }
    }

    public class LargestProfitPerItem4
    {
        public int value { get; set; }
        public string commodity { get; set; }
        public string marketId { get; set; }
    }

    public class StolenGoods
    {
        public LargestProfit4 largestProfit { get; set; }
        public LargestProfitPerItem4 largestProfitPerItem { get; set; }
        public int count { get; set; }
        public int qty { get; set; }
        public int profit { get; set; }
    }

    public class Bounty
    {
        public int highestClaimed { get; set; }
        public int qty { get; set; }
        public int value { get; set; }
    }

    public class Bond
    {
        public int qty { get; set; }
        public int value { get; set; }
    }

    public class Combat
    {
        public Bounty bounty { get; set; }
        public Bond bond { get; set; }
    }

    public class Fine
    {
        public int qty { get; set; }
        public int value { get; set; }
        public List<object> factions { get; set; }
    }

    public class Highest
    {
        public int value { get; set; }
        public int faction { get; set; }
        public int systemId { get; set; }
    }

    public class Bounty2
    {
        public Highest highest { get; set; }
        public int qty { get; set; }
        public int value { get; set; }
        public List<object> factions { get; set; }
    }

    public class StolenCargo
    {
        public int qty { get; set; }
        public int value { get; set; }
    }

    public class Crime
    {
        public Fine fine { get; set; }
        public Bounty2 bounty { get; set; }
        public StolenCargo stolenCargo { get; set; }
    }

    public class Ranks
    {
        public int r0 { get; set; }
        public int r1 { get; set; }
        public int r2 { get; set; }
        public int r3 { get; set; }
        public int r4 { get; set; }
        public int r5 { get; set; }
        public int r6 { get; set; }
        public int r7 { get; set; }
        public int r8 { get; set; }
    }

    public class Kills
    {
        public Ranks ranks { get; set; }
    }

    public class PVP
    {
        public Kills kills { get; set; }
    }

    

    public class NPC
    {
        public Kills kills { get; set; }
    }

    public class VanishCounters
    {
        public int amongPeers { get; set; }
        public int noPeers { get; set; }
        public int inDanger { get; set; }
        public int notInDanger { get; set; }
        public int inDangerWithPeers { get; set; }
        public int isNotDying { get; set; }
    }

    public class Combat2
    {
        public int ts { get; set; }
        public int gt { get; set; }
    }

    public class Trade2
    {
        public int ts { get; set; }
        public int gt { get; set; }
    }

    public class Explore2
    {
        public int ts { get; set; }
        public int gt { get; set; }
    }

    public class Crime2
    {
        public int ts { get; set; }
        public int gt { get; set; }
    }

    public class Service
    {
        public int ts { get; set; }
        public int gt { get; set; }
    }

    public class Federation
    {
        public int ts { get; set; }
        public int gt { get; set; }
    }

    public class Empire
    {
        public int ts { get; set; }
        public int gt { get; set; }
    }

    public class Ranks3
    {
        public List<Combat2> combat { get; set; }
        public List<Trade2> trade { get; set; }
        public List<Explore2> explore { get; set; }
        public List<Crime2> crime { get; set; }
        public List<Service> service { get; set; }
        public List<Federation> federation { get; set; }
        public List<Empire> empire { get; set; }
    }

    public class LastModulesBought
    {
        public string market { get; set; }
        public string module { get; set; }
        public int value { get; set; }
    }

    public class LargestProfit5
    {
        public int value { get; set; }
        public string commodity { get; set; }
        public int qty { get; set; }
        public string marketId { get; set; }
    }

    public class LargestProfitPerItem5
    {
        public int value { get; set; }
        public string commodity { get; set; }
        public string marketId { get; set; }
    }

    public class IllegalGoods
    {
        public LargestProfit5 largestProfit { get; set; }
        public LargestProfitPerItem5 largestProfitPerItem { get; set; }
        public int count { get; set; }
        public int qty { get; set; }
        public int profit { get; set; }
    }

    public class Stats
    {
        public int game_time { get; set; }
        public Missions missions { get; set; }
        public Explore explore { get; set; }
        public Ship ship { get; set; }
        public Wealth wealth { get; set; }
        public Trade trade { get; set; }
        public Mining mining { get; set; }
        public Trade blackMarket { get; set; }
        public StolenGoods stolenGoods { get; set; }
        public Combat combat { get; set; }
        public Crime crime { get; set; }
        public PVP PVP { get; set; }
        public NPC NPC { get; set; }
        public VanishCounters vanishCounters { get; set; }
        public bool prealloc { get; set; }
        public Ranks3 ranks { get; set; }
        public List<LastModulesBought> lastModulesBought { get; set; }
        public IllegalGoods illegalGoods { get; set; }
    }

    public class Ammo
    {
        public int clip { get; set; }
        public int hopper { get; set; }
    }

    public class Module
    {
        public int id { get; set; }
        public string name { get; set; }
        public int value { get; set; }
        public int unloaned { get; set; }
        public bool free { get; set; }
        public int health { get; set; }
        public bool on { get; set; }
        public int priority { get; set; }
        // optional
        public Ammo ammo { get; set; }
    }

    public class MediumHardpoint1
    {
        public Module module { get; set; }
    }



    

    public class Modules2
    {
        public MediumHardpoint1 MediumHardpoint1 { get; set; }
        public MediumHardpoint1 MediumHardpoint2 { get; set; }
        public MediumHardpoint1 SmallHardpoint1 { get; set; }
        public MediumHardpoint1 SmallHardpoint2 { get; set; }
        public MediumHardpoint1 TinyHardpoint1 { get; set; }
        public MediumHardpoint1 TinyHardpoint2 { get; set; }
        public List<object> Decal1 { get; set; }
        public List<object> Decal2 { get; set; }
        public List<object> Decal3 { get; set; }
        public List<object> PaintJob { get; set; }
        public MediumHardpoint1 Armour { get; set; }
        public MediumHardpoint1 PowerPlant { get; set; }
        public MediumHardpoint1 MainEngines { get; set; }
        public MediumHardpoint1 FrameShiftDrive { get; set; }
        public MediumHardpoint1 LifeSupport { get; set; }
        public MediumHardpoint1 PowerDistributor { get; set; }
        public MediumHardpoint1 Radar { get; set; }
        public MediumHardpoint1 FuelTank { get; set; }
        public MediumHardpoint1 Slot01_Size4 { get; set; }
        public MediumHardpoint1 Slot02_Size4 { get; set; }
        public MediumHardpoint1 Slot03_Size4 { get; set; }
        public MediumHardpoint1 Slot04_Size2 { get; set; }
        public MediumHardpoint1 Slot05_Size2 { get; set; }
        public MediumHardpoint1 Slot06_Size2 { get; set; }
    }

    public class Value
    {
        public int hull { get; set; }
        public int modules { get; set; }
        public int cargo { get; set; }
        public int total { get; set; }
        public int unloaned { get; set; }
    }

    public class Health
    {
        public int hull { get; set; }
        public int shield { get; set; }
        public bool shieldup { get; set; }
    }

    public class Wear
    {
        public int dirt { get; set; }
        public int fade { get; set; }
        public int tear { get; set; }
        public int game { get; set; }
    }

    public class Fuel
    {
        public int capacity { get; set; }
        public double lvl { get; set; }
    }

    public class Reserve
    {
        public double lvl { get; set; }
    }

    public class Cargo
    {
        public int capacity { get; set; }
        public int qty { get; set; }
        public List<object> items { get; set; }
    }

    public class Ship2
    {
        public string name { get; set; }
        public Modules2 modules { get; set; }
        public Value value { get; set; }
        public bool free { get; set; }
        public Health health { get; set; }
        public Wear wear { get; set; }
        public bool cockpitBreached { get; set; }
        public int oxygenRemaining { get; set; }
        public Fuel fuel { get; set; }
        public Reserve reserve { get; set; }
        public Cargo cargo { get; set; }
        public List<object> passengers { get; set; }
        public object refinery { get; set; }
    }

    public class Station
    {
        public string id { get; set; }
        public string name { get; set; }
    }

    public class Starsystem
    {
        public string id { get; set; }
        public string name { get; set; }
        public string systemaddress { get; set; }
    }

    public class Ship3
    {
        public string name { get; set; }
        public Station station { get; set; }
        public Starsystem starsystem { get; set; }
    }

    public class RootObject
    {
        public Commander commander { get; set; }
        public LastSystem lastSystem { get; set; }
        public LastStarport lastStarport { get; set; }
        public Stats stats { get; set; }
        public Ship2 ship { get; set; }
        public List<Ship3> ships { get; set; }
    }
}
